Emulation Fundamentals - Writing A Basic X86 Emulator